Skip to main content
The Audio Transcription service provides automatic speech-to-text conversion for audio files, powered by AWS services through a serverless API.

Overview

The transcription system allows you to:
  • Upload audio files - Support for MP3, WAV, M4A, and OGG formats
  • Automatic transcription - AWS-powered speech recognition
  • View results - Real-time access to transcription status and results
  • Download transcripts - Get completed transcriptions
  • History - Access previously transcribed files
The service uses AWS Lambda, S3, and Transcribe services through an API Gateway endpoint. Files are uploaded to S3, processed asynchronously, and results are stored for retrieval.

Supported Audio Formats

The system accepts the following audio file types:

MP3

MPEG audio layer 3

WAV

Waveform audio format

M4A

MPEG-4 audio

OGG

Ogg Vorbis audio
Maximum file size is 50 MB (51200 KB). Larger files must be compressed or split before upload.

Transcription Workflow

1

Access transcription interface

Navigate to the transcription section from the main menu
2

Select audio file

Choose a file from your computer (MP3, WAV, M4A, or OGG)
3

Upload file

The system:
  1. Generates a pre-signed S3 upload URL
  2. Uploads the file directly to AWS S3
  3. Initiates the transcription job
4

Monitor progress

Check the status of your transcription:
  • Processing - AWS is transcribing the audio
  • Completed - Transcription is ready
  • Failed - An error occurred
5

View results

Once complete, view or download the transcribed text

API Configuration

The system connects to an AWS API Gateway endpoint:
Set the TRANSCRIPTION_API_URL in your .env file to configure the API endpoint.

Generating Upload URLs

Before uploading, the system requests a pre-signed URL from AWS:
SSL verification is disabled for development environments. Enable verification in production by removing CURLOPT_SSL_VERIFYPEER = false.

Uploading Files

Once a pre-signed URL is obtained, upload the file directly to S3:
The upload uses HTTP PUT directly to the S3 pre-signed URL, ensuring secure and efficient file transfer.

Checking Transcription Results

Query the transcription status and results:

Get All Results

Get Specific File Results

Search for transcription results by filename:

Viewing Transcription History

Access the complete history of transcribed files:
The history includes:
  • File names
  • Upload timestamps
  • Transcription status
  • Completed transcriptions
  • Error messages (if any)

Routes

The transcription system uses these routes:
All routes require authentication via the auth middleware.

Error Handling

The system handles various error scenarios:

cURL Errors

Invalid JSON Responses

HTTP Errors

All errors are logged using Laravel’s logging system:

Frontend Integration

The transcription interface uses AJAX to communicate with the backend:
  1. Select file - User chooses audio file
  2. Request URL - Call /generate-upload-url with filename and content type
  3. Upload file - POST file to pre-signed URL via /upload-file
  4. Poll results - Periodically call /get-results-by-filename to check status
  5. Display transcript - Show completed transcription when ready

AWS Architecture

The backend uses a serverless architecture:

API Gateway

REST API endpoint for requests

Lambda Functions

Serverless processing logic

S3 Bucket

Audio file storage

AWS Transcribe

Speech-to-text engine

DynamoDB

Results storage

Best Practices

  1. File preparation - Convert audio to supported formats before upload
  2. File size - Compress large files to stay under 50 MB limit
  3. Audio quality - Better audio quality produces better transcriptions
  4. Check status - Poll periodically but not too frequently (every 5-10 seconds)
  5. Handle errors - Implement retry logic for failed uploads
  6. Timeout handling - Set appropriate timeout values for large files
  7. Progress feedback - Show upload and processing progress to users
  8. Result caching - Cache transcription results to avoid repeated API calls

Troubleshooting

Upload Fails

  • Verify file format is supported
  • Check file size is under 50 MB
  • Ensure internet connection is stable
  • Verify API endpoint is accessible

Transcription Never Completes

  • Check AWS service status
  • Verify audio file is not corrupted
  • Ensure audio contains speech
  • Review CloudWatch logs for Lambda errors

Empty Results

  • Confirm file was successfully uploaded to S3
  • Check transcription job started correctly
  • Verify audio format is compatible with AWS Transcribe
  • Review error logs in the transcription results

Security Considerations

The transcription service:
  • Uses pre-signed URLs with limited validity
  • Requires authentication for all operations
  • Uploads files directly to S3 (not through application server)
  • Stores results in AWS with access controls
Enable SSL verification in production by removing or setting CURLOPT_SSL_VERIFYPEER = true in all cURL requests.

File Management

Manage uploaded audio files

AWS Integration

Other AWS-powered features